/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package byblos.apresentacao.cliente;

import byblos.apresentacao.idioma.InterceptadorIdioma;
import byblos.apresentacao.usuario.InterceptadorLogin;
import byblos.negocio.Idioma;
import byblos.negocio.cliente.Cliente;
import byblos.persistencia.DAO;
import java.util.List;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.In;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Logic;
import org.vraptor.annotations.Out;
import org.vraptor.annotations.Parameter;

/**
 *
 * @author Marco Aurélio
 */
@Component
@InterceptedBy(value = {InterceptadorIdioma.class, InterceptadorLogin.class})
public class ClienteComponent {

    @In
    private Idioma idioma;
    @Out
    private List<Cliente> clientes;
    @Out
    @Parameter(create = true)
    private Cliente cliente;
    @Out
    private String mensagemSucesso;
    @Out
    private String mensagemErro;

    public void listar() {
        clientes = new DAO().listar(Cliente.class, "ClientePorIdioma", idioma);
    }

    @Logic(parameters = {"id"})
    public void editar(int id) {
        if (id == 0) {
            cliente = new Cliente();
        } else {
            cliente = new DAO().localizar(Cliente.class, id);
        }
    }

    public void salvar() {

        try {
            cliente.setNome(cliente.getNome());
            cliente.setIdioma(idioma);
            new DAO().salvar(cliente);
            mensagemSucesso = "Cliente salvo com sucesso!";
        } catch (Throwable t) {
            mensagemErro = "Não foi possível salvar o cliente!";
            t.printStackTrace();
        }
    }

    @Logic(parameters = {"id"})
    public void remover(int id) {
        try {
            Cliente cliente = new DAO().localizar(Cliente.class, id);
            new DAO().remover(cliente);
        } catch (Throwable t) {
            mensagemErro = "Não foi possível remover o cliente!";
            t.printStackTrace();
        }
    }
}
